| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public, | parameter | :: | DYN_FOUR_POINT_INTEGRATION_RULE | = | 4 |
Defines a four-point integration rule. |
| integer(kind=int32), | public, | parameter | :: | DYN_ONE_POINT_INTEGRATION_RULE | = | 1 |
Defines a single-point integration rule. |
| integer(kind=int32), | public, | parameter | :: | DYN_THREE_POINT_INTEGRATION_RULE | = | 3 |
Defines a three-point integration rule. |
| integer(kind=int32), | public, | parameter | :: | DYN_TWO_POINT_INTEGRATION_RULE | = | 2 |
Defines a two-point integration rule. |
Applies boundary conditions to a matrix by removal of the appropriate rows and columns.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(inout), | dimension(:) | :: | gdof |
An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output. |
|
| real(kind=real64), | intent(in), | dimension(:,:) | :: | x |
The matrix to constrain. |
The altered matrix.
Applies boundary conditions to a vector by removal of the appropriate items.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(inout), | dimension(:) | :: | gdof |
An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | x |
The vector to constrain. |
The altered vector.
Applies boundary conditions to a CSR-format sparse matrix by removal of the appropriate rows and columns.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(inout), | dimension(:) | :: | gdof |
An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output. |
|
| type(csr_matrix), | intent(in) | :: | x |
The matrix to constrain. |
The altered matrix.
Applies a displacement constraint to the specified degree of freedom.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | dof |
The global degree-of-freedom to which the constraint should be applied. |
||
| real(kind=real64), | intent(in) | :: | val |
The value of the displacement constraint. |
||
| real(kind=real64), | intent(inout), | dimension(:,:) | :: | k |
The stiffness matrix to which the constraint should be applied. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | f |
The external force vector to which the constraint should be applied. |
Applies a displacement constraint to a CSR-format sparse matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | dof |
The global degree-of-freedom to which the constraint should be applied. |
||
| real(kind=real64), | intent(in) | :: | val |
The value of the displacement constraint. |
||
| type(csr_matrix), | intent(inout) | :: | k |
The stiffness matrix to which the constraint should be applied. |
||
| real(kind=real64), | intent(inout), | dimension(:) | :: | f |
The external force vector to which the constraint should be applied. |
Assembles dense global mass and stiffness matrices.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(element), | intent(in) | :: | elements(:) |
The finite elements to assemble. |
||
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| real(kind=real64), | intent(out), | allocatable | :: | m(:,:) |
The assembled global mass matrix. |
|
| real(kind=real64), | intent(out), | allocatable | :: | k(:,:) |
The assembled global stiffness matrix. |
|
| integer(kind=int32), | intent(in), | optional | :: | rule |
The numerical integration rule. |
Assembles global mass and stiffness matrices in CSR format.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(element), | intent(in) | :: | elements(:) |
The finite elements to assemble. |
||
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| type(csr_matrix), | intent(out) | :: | m |
The assembled global mass matrix in CSR format. |
||
| type(csr_matrix), | intent(out) | :: | k |
The assembled global stiffness matrix in CSR format. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The numerical integration rule. |
Assembles a dense global stiffness matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(element), | intent(in) | :: | elements(:) |
The finite elements to assemble. |
||
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| real(kind=real64), | intent(out), | allocatable | :: | k(:,:) |
The assembled global stiffness matrix. |
|
| integer(kind=int32), | intent(in), | optional | :: | rule |
The numerical integration rule. |
Assembles the global stiffness matrix in CSR format.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The total number of global degrees of freedom. |
||
| class(element), | intent(in) | :: | elements(:) |
The finite elements to assemble. |
||
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
|
| type(csr_matrix), | intent(out) | :: | k |
The assembled global stiffness matrix in CSR format. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The numerical integration rule. |
Constructs a new [[material]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in) | :: | modulus |
The modulus of elasticity. |
||
| real(kind=real64), | intent(in) | :: | pratio |
The Poisson's ratio. |
||
| real(kind=real64), | intent(in) | :: | density |
The density. |
The new [[material]].
Constructs a new [[node]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | index |
The global index of the node. |
||
| integer(kind=int32), | intent(in) | :: | dof |
The number of degrees of freedom of the node. |
||
| real(kind=real64), | intent(in) | :: | x |
The x-coordinate. |
||
| real(kind=real64), | intent(in) | :: | y |
The y-coordinate. |
||
| real(kind=real64), | intent(in) | :: | z |
The z-coordinate. |
The new [[node]].
Constructs a new [[node]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | index |
The global index of the node. |
||
| integer(kind=int32), | intent(in) | :: | dof |
The number of degrees of freedom of the node. |
||
| class(point), | intent(in) | :: | pt |
The location of the node. |
The new [[node]].
Restores the constrained degrees-of-freedom from the boundary conditions applied by apply_boundary_conditions.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(inout), | dimension(:) | :: | gdof |
An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | x |
The constrained vector. |
The altered vector.
Restores constrained rows and columns to a reduced CSR matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(inout), | dimension(:) | :: | gdof |
An array of the global degrees of freedom to restrain. The array is sorted into ascending order on output. |
|
| type(csr_matrix), | intent(in) | :: | x |
The reduced CSR matrix. |
The expanded CSR matrix with zero constrained rows and columns.
Solves the static system .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real64), | intent(in), | dimension(:,:) | :: | K |
The N-by-N stiffness matrix. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | F |
The N-element external forcing vector. |
The N-element solution vector.
Solves the static system .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(csr_matrix), | intent(in) | :: | K |
The N-by-N stiffness matrix. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | F |
The N-element external forcing vector. |
The N-element solution vector.
Defines an element.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(material), | public | :: | material |
The material. |
| procedure (element_const_matrix_function) , public , pass :: constitutive_matrix | |
| procedure (element_shape_function) , public , pass :: evaluate_shape_function | |
| procedure , public :: external_force_vector => e_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure (element_query) , public , pass :: get_dof_per_node | |
| procedure (element_get_node) , public , pass :: get_node | |
| procedure (element_query) , public , pass :: get_node_count | |
| procedure (element_get_node_natural_coordinates) , public , pass :: get_node_natural_coordinates | |
| procedure (element_matrix_function) , public , pass :: jacobian | |
| procedure , public :: mass_matrix => e_mass_matrix Function | |
| procedure (element_matrix_function) , public , pass :: shape_function_matrix | |
| procedure , public :: stiffness_matrix => e_stiffness_matrix Function | |
| procedure , public :: strain => e_strain Function | |
| procedure (element_matrix_function) , public , pass :: strain_displacement_matrix | |
| procedure , public :: stress => e_stress Function |
Defines a line element type.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | area |
The element cross-sectional area. |
|||
| type(material), | public | :: | material |
The material. |
| procedure (element_const_matrix_function) , public , pass :: constitutive_matrix | |
| procedure (element_shape_function) , public , pass :: evaluate_shape_function | |
| procedure , public :: external_force_vector => le_ext_force_vector Function | |
| procedure (element_query) , public , pass :: get_dimensionality | |
| procedure (element_query) , public , pass :: get_dof_per_node | |
| procedure (element_get_node) , public , pass :: get_node | |
| procedure (element_query) , public , pass :: get_node_count | |
| procedure , public :: get_node_natural_coordinates => le_get_node_natural_coordinates Function | |
| procedure (line_element_get_terminal) , public , pass :: get_terminal_nodes | |
| procedure (element_matrix_function) , public , pass :: jacobian | |
| procedure , public :: length => le_length Function | |
| procedure , public :: mass_matrix => le_mass_matrix Function | |
| procedure (line_element_const_matrix_function) , public , pass :: rotation_matrix | |
| procedure (element_matrix_function) , public , pass :: shape_function_matrix | |
| procedure , public :: stiffness_matrix => le_stiffness_matrix Function | |
| procedure , public :: strain => le_strain Function | |
| procedure (element_matrix_function) , public , pass :: strain_displacement_matrix | |
| procedure , public :: stress => le_stress Function |
Defines a linear-elastic-isotropic material.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | density |
The density of the material. |
|||
| real(kind=real64), | public | :: | modulus |
The modulus of elasticity of the material. |
|||
| real(kind=real64), | public | :: | poissons_ratio |
The Poisson's ratio of the material. |
| private pure function mat_init (modulus, pratio, density) | Constructs a new [[material]]. |
Defines a node.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public | :: | dof |
The number of degrees of freeedom associated with this node. |
|||
| integer(kind=int32), | public | :: | index |
The global index of the node. |
|||
| real(kind=real64), | public | :: | x |
The x-coordinate. |
|||
| real(kind=real64), | public | :: | y |
The y-coordinate. |
|||
| real(kind=real64), | public | :: | z |
The z-coordinate. |
| private pure function nd_init_1 (index, dof, x, y, z) | Constructs a new [[node]]. |
| private pure function nd_init_2 (index, dof, pt) | Constructs a new [[node]]. |
Creates a connectivity matrix for the element, stored in CSR format. The matrix contains exactly one non-zero (unity) entry per row; therefore, it is well-suited to a sparse representation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | gdof |
The number of global degrees of freedom. |
||
| class(element), | intent(in) | :: | e |
The element. |
||
| class(node), | intent(in), | dimension(:) | :: | nodes |
The global node list. |
The resulting matrix.
Computes nodal strain results by averaging the strain contributions from each element incident upon a node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | elements(:) |
The finite elements in the model. |
||
| class(node), | intent(in) | :: | nodes(:) |
The global node list defining the displacement-vector ordering. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The global displacement vector. |
The strain results. Each column corresponds to a node in NODES, and each row corresponds to one strain component.
Computes nodal stress results by averaging the stress contributions from each element incident upon a node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | elements(:) |
The finite elements in the model. |
||
| class(node), | intent(in) | :: | nodes(:) |
The global node list defining the displacement-vector ordering. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The global displacement vector. |
The stress results. Each column corresponds to a node in NODES, and each row corresponds to one stress component.
Computes the derivative of the shape function with respect to the natural coordinate specified. The derivative is approximated centrally as The second derivative uses the centered finite difference
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | index |
The index of the shape function to evaluate. |
||
| class(element), | intent(in) | :: | elem |
The element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinate at which to evaluate the derivative. |
|
| integer(kind=int32), | intent(in) | :: | i |
The index of the natural coordinate to with which the derivative is to be computed. |
The result.
Computes the second derivative of the shape function with respect to the natural coordinate specified.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | index |
The index of the shape function to evaluate. |
||
| class(element), | intent(in) | :: | elem |
The element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinate at which to evaluate the derivative. |
|
| integer(kind=int32), | intent(in) | :: | i |
The index of the natural coordinate to with which the derivative is to be computed. |
The result.